package logic.moves;

public interface GameMove {

	/**
	 * Execute the Game move and save info for restore points
	 */
	public boolean makeMove();
	
	/**
	 * Use restore point to undo move
	 */
	public void restore();
	
	/**
	 * 
	 * @return whether this move has been made
	 */
	public boolean hasMoved();
	
	/**
	 * print a description of the undoing of the move to the STD out
	 */
	public void printUndoMove();
	
	/**
	 * print a description of the move to the STD out
	 */
	public void printDoMove();
	/**
	 * Prints a short description in commit
	 */
	public void printShortDescription();
	
	/**
	 * @return move type as string (static field)
 	 */
	public String getType();  
	
	/**
	 * get a description of the move
	 */
	public String getBriefDo();
	
	/**
	 * get a description of the undo move
	 */
	public String getBriefUndo();
}
